﻿using System;
using Gencode.Common.Generics;

namespace Gencode.Gengui.Wizzard
{
	public interface IWizardControler
	{
		/// <summary>
		/// Container for Data
		/// </summary>
		TypeContainer DataObjects
		{
			get;
		}

		/// <summary>
		/// Sets the buttons-enabled value to the given value
		/// </summary>
		bool ButtonsEnabled
		{
			set;
		}

		/// <summary>
		/// Adds a Control to the dialog
		/// </summary>
		/// <param name="key">keyname of the dialog</param>
		/// <param name="control">control to add</param>
		void AddControl(string key, WizzardControl control);

		/// <summary>
		/// Moves to next view. Interface extension that allows views to navigate. Only works if button is enabled
		/// </summary>
		void MoveNext();

		/// <summary>
		/// Moves to previous view. Interface extension that allows views to navigate. Only works if button is enabled
		/// </summary>
		void MovePrevious();

		/// <summary>
		/// Gets executed when finish is clicked. has to be overriden
		/// </summary>
		void Finish();

		/// <summary>
		/// Gets or sets if the cancle button should be enabled or not
		/// </summary>
		bool EnableCanleButton { get; set; }
	}
}
